package com.ruoyi.system.service;


import com.ruoyi.common.core.domain.entity.Vo.ObjectItem;
import io.minio.*;
import io.minio.messages.DeleteError;
import org.springframework.http.ResponseEntity;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;

/**
 * @Author: Y.C
 * @CreateTime: 2022/5/20 16:47
 * @Description: minio service
 */
public interface MinioService {

    /**
     * 判断 bucket 是否存在，不存在则创建
     * @param bucketName 存储 bucket 名称
     */
    void existBucket(String bucketName);

    /**
     * 创建 bucket
     * @param bucketName 存储 bucket 名称
     * @return
     */
    boolean makeBucket(String bucketName);

    /**
     * 删除 bucket
     * @param bucketName 存储 bucket 名称
     * @return
     */
    boolean removeBucket(String bucketName);

    /**
     * 批量上传文件
     * @param files 上传文件名称列表
     * @return
     */
    List<String> uploads(MultipartFile[] files);

    /**
     * 下载文件
     * @param fileName 文件名称
     * @return: org.springframework.http.ResponseEntity<byte [ ]>
     */
    ResponseEntity<byte[]> download(String fileName);

    /**
     * 获取文件对象列表
     * @param bucketName 存储 bucket 名称
     * @return
     */
    List<ObjectItem> listObjects(String bucketName);

    /**
     * 批量删除文件对象
     * @param bucketName 存储 bucket 名称
     * @param objects 对象名称集合
     * @return
     */
    Iterable<Result<DeleteError>> removeObjects(String bucketName, List<String> objects);

}
